Introducción a ML con Python 🐍

00_01 - Python 101

Iván Moreno

Python 101

¿Qué es Python?

  • Lenguaje de programación interpretado (no compilado)
  • Multiplataforma
  • Multiparadigma (imperativo, orientado a objetos, funcional)
  • Tipado dinámico (no es necesario declarar el tipo de las variables)
  • Orientado a objetos
  • Extensible (módulos y paquetes) y portable (e.g., Jython, una implementación de Python que corre sobre la JVM)

¿Por qué Python?

  • Sintaxis sencilla y legible (indentación)
  • Gran cantidad de librerías (compatible con C y C++)
  • Comunidad activa
  • Multiplataforma

Instalación

Anaconda

  • Distribución de Python (y R) para computación científica
  • Gestor de paquetes (conda)
  • Gestor de entornos (conda)
  • Dos versiones: Anaconda (GUI, ~3GB) y Miniconda (CLI, ~400MB)

Jupyter

  • Cuaderno de notas interactivo para la computación científica
  • Celdas de código, texto (Markdown) e imágenes / gráficos
  • Kernels (procesos encargados de ejecutar el código en un lenguaje determinado)
  • Interfaz web (Jupyter Notebook)

Descarga Anaconda

https://www.anaconda.com/products/distribution#Downloads

Inicialización del entorno

  • Windows: Anaconda Prompt
  • Linux & Mac: Terminal
conda create -n intro python=3.11
conda activate intro
python --version
python -i -c "print('sss 🐍')" # Ctrl + D para salir

Gestión de entornos con conda

  • Crear un entorno: conda create -n <nombre> python=<versión>
  • Activar un entorno: conda activate <nombre>
  • Desactivar un entorno: conda deactivate
  • Eliminar un entorno: conda remove -n <nombre> --all
  • Listar entornos: conda env list

Gestión de paquetes con conda

  • Instalar un paquete: conda install <paquete>
  • Eliminar un paquete: conda remove <paquete>
  • Listar paquetes: conda list

pip vs conda

  • pip es el gestor de paquetes oficial de Python
  • conda es el gestor de paquetes de Anaconda
  • conda es más completo (y lento) que pip (e.g., gestión de entornos)
  • conda se basa en binarios, mientras que pip en código fuente (portabilidad, velocidad)
  • conda comprueba potenciales conflictos entre dependencias, con resolución automática de conflictos
  • pip usa PyPI (Python Package Index), mientras que conda usa Anaconda Cloud (pese a que también puede usar PyPI y otros repositorios)

Estructura

Módulos

  • Un módulo es un fichero con extensión .py
  • Un módulo puede contener funciones, clases, variables, etc.
  • Un módulo puede importar otros módulos
  • Un módulo puede ser ejecutado directamente o importado por otro módulo

Módulos – Ejemplo

# módulo.py
def funcion():
    print("Hola mundo")

if __name__ == "__main__":
    funcion()
$ python modulo.py
Hola mundo
# otro_modulo.py
import modulo

modulo.funcion()
$ python otro_modulo.py
Hola mundo

Paquetes

  • Un paquete es un conjunto de módulos
  • Un paquete es un directorio con un fichero __init__.py
  • Un paquete puede contener otros paquetes (subpaquetes)
  • Un paquete puede ser importado por otro paquete o módulo

Paquetes – Ejemplo

$ tree
.
├── main.py
└── paquete
    ├── __init__.py
    └── modulo.py
# main.py
import paquete.modulo

paquete.modulo.funcion()
$ python main.py
Hola mundo

Estructura de programas en Python

$ tree
.
├── main.py
└── paquete
    ├── __init__.py
    ├── modulo.py
    └── subpaquete
        ├── __init__.py
        └── otro_modulo.py
# main.py
import paquete.subpaquete.otro_modulo

paquete.subpaquete.otro_modulo.funcion()
$ python main.py
Hola mundo